package work.jame.blog.framework.utils;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import work.jame.blog.framework.result.PageResult;

import java.util.List;

/**
 * @author Jame!
 * @date 2023/5/21 上午 9:47
 */
public class SqlUtils {

    /**
     * 根据页数和页大小计算起始行
     *
     * @param pageNumber 页数
     * @param pageSize   页大小
     * @return 起始行
     */
    public static long startLine(long pageNumber, long pageSize) {
        return (pageNumber - 1) == 0 ? 0 : (pageNumber - 1) * pageSize;
    }

    /**
     * 在传入值后拼接%
     *
     * @param value 值
     * @return
     */
    public static String splitJointPercentSignAfterValue(String value) {
        return value + "%";
    }

    /**
     * 在传入值前后拼接%
     *
     * @param value 值
     * @return
     */
    public static String splitJointPercentSignAroundValue(String value) {
        return "%" + value + "%";
    }

    /**
     * 根据mybatisPlus填充数据和分页数据
     *
     * @param page
     * @param <T>
     * @return
     */
    public static <T> PageResult<T> fillPageResult(Page<T> page) {
        if (page.getTotal() == 0) {
            return PageResult.noData();
        }
        return PageResult.succeed(
                page.getRecords(),
                page.getCurrent(),
                page.getSize(),
                page.getTotal());
    }

    /**
     * 根据自定义查询封装分页结果
     *
     * @param result      结果
     * @param lineCount   总行数
     * @param currentPage 当前页
     * @param pageSize    页大小
     * @return PageResult
     */
    public static PageResult<?> fillPageResult(List<?> result, Long lineCount, Long currentPage, Long pageSize) {
        return PageResult.succeed(result, currentPage, pageSize, lineCount);
    }

}

